package negocio;

import java.util.ArrayList;
import java.util.ResourceBundle;

import cursoDAO_disciplinaDAO.CursoDAO;
import cursoDAO_disciplinaDAO.CursoDAOArquivo;
import cursoDAO_disciplinaDAO.CursoDTO;
import cursoDAO_disciplinaDAO.DisciplinaDTO;

public class Curso {
	private String nome;
	private String codigo;
	private int totalCreditos;
	private int totalSemestres;
	private char turno;
	private ArrayList<Disciplina> disciplinas;
	
	private static CursoDAO getDao() {
		CursoDAO dao = null;

		if (ResourceBundle.getBundle("resources.dao").getString("metodo")
				.equals("arquivo"))
			dao = new CursoDAOArquivo();

		return dao;
	}

	public Curso(String codigo) {
		CursoDTO dto = getDao().encontrarCurso(codigo);
		
		this.nome = dto.getNome();
		this.codigo = dto.getCodigo();
		this.totalCreditos = dto.getTotalCreditos();
		this.totalSemestres = dto.getTotalSemestres();
		this.turno = dto.getTurno();

		for (String cod : dto.getCodigosDisciplinas()) {
			disciplinas.add(new Disciplina(cod));
		}
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getCodigo() {
		return codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public int getTotalCreditos() {
		return totalCreditos;
	}

	public void setTotalCreditos(int totalCreditos) {
		this.totalCreditos = totalCreditos;
	}

	public int getTotalSemestres() {
		return totalSemestres;
	}

	public void setTotalSemestres(int totalSemestres) {
		this.totalSemestres = totalSemestres;
	}

	public char getTurno() {
		return turno;
	}

	public void setTurno(char turno) {
		this.turno = turno;
	}

	public ArrayList<Disciplina> getDisciplinas() {
		return disciplinas;
	}

	public void setDisciplinas(ArrayList<Disciplina> disciplinas) {
		this.disciplinas = disciplinas;
	}
	
	
	public void salvar() {
		CursoDTO dto = new CursoDTO();

		dto.setCodigo(codigo);
		dto.setNome(nome);		
		dto.setTotalCreditos(totalCreditos);
		dto.setTotalSemestres(totalSemestres);
		dto.setTurno(turno);		
		
		Disciplina c = new  Disciplina(codigo);
		//FIXME
//		for (String cod : c.Disciplinas()) {
//			
//			disciplinas.add(new Disciplina(cod));
//		}
//		dto.setCodigosDisciplinas(codigosDisciplinas);
		
		getDao().salvarCurso(dto);
	}

	public static void imprimirLista() {
		getDao().imprimirCursos();
	}

}
